package com.coscoshipping.rams.demo.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.coscoshipping.rams.demo.entity.AEncrypt;
import com.coscoshipping.rams.demo.pojo.dto.dict.AEncryptDTO;
import com.coscoshipping.rams.demo.pojo.vo.AEncryptVO;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zhaoyin.yang
 * @since 2024-07-12
 */
public interface IAEncryptService extends IService<AEncrypt> {

    /**
     * @description 测试查询 普通参数 拦截器对结果对象进行解密
     * @param id
     * @return: com.coscoshipping.rams.demo.entity.AEncrypt
     * @author zhaoyin.yang
     * @date 2024/4/3 16:15
     */
    AEncryptVO getAEncryptById(Integer id);


    /**
     * @description 测试插入 传参为对象，拦截器对含有加密注解的对象的属性 进行自动加密
     * @param aEncrypt
     * @return: int
     * @author zhaoyin.yang
     * @date 2024/4/3 16:15
     */
    void addAEncrypt(AEncryptDTO aEncrypt);


    /**
     * @description 测试查询 查询结果为list 需要对list结果里的对象属性进行解密
     * @return: java.util.List<com.coscoshipping.rams.demo.entity.AEncrypt>
     * @author zhaoyin.yang
     * @date 2024/4/3 16:15
     */
    List<AEncryptVO> getAllAEncrypts();


    /**
     * @description 测试查询 普通参数加密
     * @param mobile
     * @return: java.util.List<com.coscoshipping.rams.demo.entity.AEncrypt>
     * @author zhaoyin.yang
     * @date 2024/4/3 16:15
     */
    List<AEncryptVO> getAEncryptByPhone(String mobile);


    /**
     * @description 测试查询 传参为对象 对象中的mobile参数需要拦截器进行加密才能查询
     * @param encryptDTO
     * @return: java.util.List<com.coscoshipping.rams.demo.entity.AEncrypt>
     * @author zhaoyin.yang
     * @date 2024/4/3 16:15
     */
    List<AEncryptVO> getAEncryptByAEncrypt(AEncryptDTO encryptDTO);


    /**
     * @description 测试插入 对list进行加密
     * @param encrypts
     * @return: int
     * @author zhaoyin.yang
     * @date 2024/4/3 16:16
     */
    void insertBatch(List<AEncryptDTO> encrypts);

    /**
     * @description 测试插入 使用@Param注解 对list进行加密
     * @param encryptList
     * @return: int
     * @author zhaoyin.yang
     * @date 2024/4/3 16:16
     */
    void insertBatchByParam(List<AEncryptDTO> encryptList);

    /**
     * @description 测试插入 普通参数加密，多个需要加密的字段
     * @param encrypt
     * @return: int
     * @author zhaoyin.yang
     * @date 2024/4/3 16:16
     */
    void insertAEncrypt(AEncryptDTO encrypt);


    /**
     * @description 测试插入-普通参数加密
     * @param encrypt
     * @return: void
     * @author zhaoyin.yang
     * @date 2024/4/6 16:47
     */
    void insertAEncryptNormal(AEncryptDTO encrypt);


    /**
     * @description lambdaUpdate测试
     * @return: void
     * @author zhaoyin.yang
     * @date 2024/4/11 17:01
     */
    void lambdaUpdateTest();
}
